#ifndef PERSON_H
#define PERSON_H

#include <QObject>

/** Класс описывающий одну строку в таблице.
	*/
class Person : public QObject{
	Q_OBJECT
	
	// Чтобы свойства класса были доступны из qml опишу их с
	// помоющь макроса Q_PROPERTY. Подробности см. в докумментаци.	
	/** Имя.*/
	Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChange)
	/** Отчество.*/
	Q_PROPERTY(QString patronymic READ patronymic WRITE setPatronymic NOTIFY patronymicChange)
	/** Фамилия.*/
	Q_PROPERTY(QString surname READ surname WRITE setSurname NOTIFY surnameChange)
	/** Номер телефона.*/
	Q_PROPERTY(QString telephone READ telephone WRITE setTelephone NOTIFY telephoneChange)
private:
	//Объявлю поля хранящие даные строки.
	/** Имя.*/
	QString m_name;
	/** Отчество.*/
	QString m_patronymic;
	/** Фамилия.*/
	QString m_surname;
	/** Номер телефона.*/
	QString m_tel;
public:
	explicit Person(QObject *parent = 0);
	
	// Объявлю методы доступа к полям.
	/** Имя.*/
	const QString & name() const;
	/** Установить имя.*/
	void setName(const QString &name);
	/** Отчество.*/
	const QString & patronymic() const;
	/** Установить отчество.*/
	void setPatronymic(const QString & patronymic);
	/** Фамилия.*/
	const QString & surname() const;
	/** Установить фамилию.*/
	void setSurname(const QString & surname);
	/** Номер телефона.*/
	const QString & telephone() const;
	/** Установить номер телефона.*/
	void setTelephone(const QString & telephone);
signals:
	// Объявлю сигналы, оповещяющин, что поле в строке изменилось.
	/** Изменилось имя.*/
	void nameChange();
	/** Изменилось отчество.*/
	void patronymicChange();
	/** Изменилась фамилия.*/
	void surnameChange();
	/** Изменился номер телефона.*/
	void telephoneChange();
	
public slots:
	
};

#endif // PERSON_H
